$font-color: #444 !default;  //looks better than black: twitter.com/H_FJ/statuses/11800719859
$link-color: #607890 !default;
$link-hover-color: #036 !default;
$link-active-color: #607890 !default;
$link-visited-color: #607890 !default;
$selected-font-color: #fff !default;
$selected-background-color: #ff5e99 !default;
$list-left-margin: 1.8em !default;

//
// Minimal base styles
//

@mixin html5-boilerplate-styles {
  html { @include force-scrollbar; }

  ul, ol { margin-left: $list-left-margin; }
  ol { list-style-type: decimal; }

  td { vertical-align: top; }

  sub { @include sub; }

  sup { @include sup; }

  textarea { overflow: auto; }  // www.sitepoint.com/blogs/2010/08/20/ie-remove-textarea-scrollbars

  @include accessible-focus;

  @include quoted-pre;

  @include align-input-labels;

  @include hand-cursor-inputs;

  @include reset-form-elements;

  @include selected-text;

  @include webkit-tap-highlight;

  @include ie-hacks;

  @include no-nav-margins;
}

// set sub, sup without affecting line-height: gist.github.com/413930
@mixin sub{
  font-size: 75%; line-height: 0; position: relative; bottom: -0.25em;
}
@mixin sup{
  font-size: 75%; line-height: 0; position: relative; top: -0.5em;
}

// accessible focus treatment: people.opera.com/patrickl/experiments/keyboard/test
@mixin accessible-focus {
  a:hover, a:active { outline: none; }
}

// www.pathf.com/blogs/2008/05/formatting-quoted-code-in-blog-posts-css21-white-space-pre-wrap
@mixin quoted-pre {
  pre {
    white-space: pre; white-space: pre-wrap; word-wrap: break-word;
    padding: 15px;
  }
}

// Align checkboxes, radios, text inputs with their label by: Thierry Koblentz tjkdesign.com/ez-css/css/base.css
@mixin align-input-labels {
  input[type="radio"] { vertical-align: text-bottom; }
  input[type="checkbox"] { vertical-align: bottom; }
  .ie7 input[type="checkbox"] { vertical-align: baseline; }
  .ie6 input { vertical-align: text-bottom; }
}

// Hand cursor on clickable input elements
@mixin hand-cursor-inputs {
  label, input[type="button"], input[type="submit"], input[type="image"], button { cursor: pointer; }
}

@mixin reset-form-elements {
  // 1) Make inputs and buttons play nice in IE: www.viget.com/inspire/styling-the-button-element-in-internet-explorer/
  // 2) WebKit browsers add a 2px margin outside the chrome of form elements.
  //    Firefox adds a 1px margin above and below textareas
  button, input, select, textarea { width: auto; overflow: visible; margin: 0; }

  // Remove extra padding and inner border in Firefox
  input::-moz-focus-inner,
  button::-moz-focus-inner { border: 0; padding: 0; }
}

@mixin webkit-reset-form-elements {
  @warn "The 'webkit-reset-form-elements' mixin has been deprecated. Use 'reset-form-elements' instead.";
}

// These selection declarations have to be separate.
// No text-shadow: twitter.com/miketaylr/status/12228805301
// Also: hot pink!
@mixin selected-text {
  ::-moz-selection{ background:$selected-background-color; color: $selected-font-color; text-shadow: none; }
  ::selection { background: $selected-background-color; color: $selected-font-color; text-shadow: none; }
}

// j.mp/webkit-tap-highlight-color
@mixin webkit-tap-highlight {
  a:link { -webkit-tap-highlight-color: $selected-background-color; }
}

// Always force a scrollbar in non-IE
@mixin force-scrollbar {
  overflow-y: scroll;
}

@mixin ie-hacks {
  // Bicubic resizing for non-native sized IMG:
  // code.flickr.com/blog/2008/11/12/on-ui-quality-the-little-things-client-side-image-resizing/
  .ie7 img { -ms-interpolation-mode: bicubic; }

  .ie6 legend, .ie7 legend { margin-left: -7px; }
}

@mixin no-nav-margins {
  // remove margins for navigation lists
  nav ul, nav li { margin: 0; list-style:none; list-style-image: none; }
}
